#ifndef MAIN_FRAME_IMPL_H
#define MAIN_FRAME_IMPL_H


class EnhancedStatusBar;

class WorkWatcherImpl : public WorkWatcher
{
public:
	WorkWatcherImpl(wxPanel *pPanel, wxGauge *pGauge, wxButton *pCancelButton, wxStaticText *&pDescriptionText);
	~WorkWatcherImpl();
	virtual FileOperationProgress CurrentWork(LARGE_INTEGER currentWork);
	virtual void TotalWork(LARGE_INTEGER totalWork);
	virtual FileOperationProgress CurrentFile(const wxString &file);
	void OnCancelButtonPressed(wxCommandEvent &event);
private:	
	wxPanel *panel;
	wxGauge *gauge;
	wxButton *cancelButton;
	wxStaticText *descriptionText;
	LARGE_INTEGER totalWork;
	bool cancelPressed;
};

class MainFrameImpl : public MainFrame, public WorkWatcher
{
public:
    MainFrameImpl( wxWindow* parent );		
	CompositeFilePanel *GetCompisiteFilePanel(unsigned int id);
	void AddJobWidgets(wxPanel *&panel, wxGauge *&gauge, wxButton *&cancelButton, wxStaticText *&descriptionText);
	void RemovePanel(wxPanel *panel);
	virtual FileOperationProgress CurrentWork(LARGE_INTEGER currentWork);
	virtual void TotalWork(LARGE_INTEGER totalWork);	
private:
	EnhancedStatusBar *statusBar;
	wxBoxSizer *jobsPanelSizer;
	wxGauge *progressBar;
};

#endif